package com.grt.condify.reflect;

import com.grt.condify.utils.StringUtil;

import java.lang.reflect.Method;

/**
 * class和其方法的缓存，主要用作记录一个class对应的Getters和Setters。
 * 该方法不会对Mapping进行静态的映射，即该类只是在其生命周期内进行数据的存储工作，
 * 如果需要长期保存，需要第三方类对该类实体进行缓存的工作
 * <p>
 * Created by cy on 16/5/26.
 */
public class Class2MehtodInNonStaticCache extends Class2MapInNonStaticCache<String, String, Method> {

    @Override
    public boolean isKeyEmpty(String key) {
        return StringUtil.isEmpty(key);
    }

    @Override
    public boolean isKeyOfMapEmpty(String keyOfMap) {
        return StringUtil.isEmpty(keyOfMap);
    }

    @Override
    public boolean isValueIsEmpty(Method value) {
        return value == null;
    }

    /**
     * 根据指定的字段名和类名称查询对应的Getter或Setter方法
     *
     * @param className
     * @param fieldName
     * @return
     */
    public Method searchMethodIn(String className, String fieldName) {
        if (StringUtil.isEmpty(className) || StringUtil.isEmpty(fieldName)) {
            return null;
        }
        return isContain(className) ? firstLevelCaches.get(className).get(fieldName) : null;
    }

}
